/**
 * Copyright (C) 2018-2022
 * All rights reserved, Designed By www.yixiang.co

 */
package co.yixiang.modules.activity.param;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import co.yixiang.domain.BaseDomain;
import co.yixiang.modules.activity.vo.CouponSelectProductVo;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.data.annotation.Transient;

import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.List;

/**
* @author hupeng
* @date 2020-05-13
*/
@Data
public class YxStoreCouponParam extends BaseDomain {

    /** 优惠券表ID */
    @TableId
    @ApiModelProperty(value = "优惠券ID")
    private Integer id;


    /** 优惠券名称 */
    @NotBlank(message = "请填写优惠券名称")
    @ApiModelProperty(value = "优惠券名称")
    private String title;


    /** 兑换消耗积分值 */
    @ApiModelProperty(value = "兑换消耗积分值")
    private Integer integral;


    /** 优惠券面额 */
    @NotNull(message = "请输入优惠券面额")
    @DecimalMin(value="0.01", message = "请填写优惠券面额大于0" )
    @DecimalMax(value="99999999.99", message = "优惠券面额要小于99999999.99")
    @ApiModelProperty(value = "兑换的优惠券面额")
    private BigDecimal couponPrice;


    /** 最低消费多少金额可用优惠券 */
    @DecimalMax(value="99999999.99", message = "最低消费不在合法范围内")
    @ApiModelProperty(value = "最低消费多少金额可用优惠券")
    private BigDecimal useMinPrice;


    /** 优惠券有效期限（单位：天） */
    @NotNull(message = "请输入有效期限")
    @Min(message = "请输入有效期限大于0", value = 1)
    @ApiModelProperty(value = "优惠券有效期限（单位：天）")
    private Integer couponTime;


    /** 排序 */
    @ApiModelProperty(value = "排序")
    private Integer sort;


    /** 状态（0：关闭，1：开启） */
    @ApiModelProperty(value = "优惠券状态（0：关闭，1：开启） ")
    private Integer status;

    /** 优惠券类型（0：通用券，1：商品券，2：内部券）  */
    @ApiModelProperty(value = "优惠券类型（0：通用券，1：商品券，2：内部券） ")
    private Integer type;

    /** 优惠券绑定产品ID  */
    @ApiModelProperty(value = "优惠券绑定产品ID ")
    private String productId;


    @ApiModelProperty(value = "限制类型，1限制金额2限制商品数量3限制商品分类")
    private Integer limitType;

    /** 限制商品数量 */
    @ApiModelProperty(value = "限制商品数量")
    private Integer limitGoodsNum;

    /** 商品数量信息JSON  */
    @ApiModelProperty(value = "商品数量信息JSON ")
    private String productIdJson;

    private List<CouponSelectProductVo> selectProductList;


    @ApiModelProperty(value = "是否限制商品分类")
    private Integer isLimitCate;

    /** 限制商品分类ID数组 */
    private List<Integer> cateList;

    @ApiModelProperty(value = "限制商品分类最低商品总数")
    private Integer limitGoodCateNum;

    public void copy(YxStoreCouponParam source){
        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
    }
}
